home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_12_05 / tsai / parse.cpp < prev    next >
Encoding:
Text File  |  1994-03-01  |  1.2 KB  |  41 lines

  1.  
  2. Listing 7: Function parse() of Pif
  3.  
  4. BOOL Pif::parse()
  5. {
  6.   Token * pTemp;
  7.  
  8.   // create a expression object
  9.   Pexpression * pTempExpression = new Pexpression;
  10.   if (pTempExpression == NULL)     // check out of memory
  11.     return FALSE;
  12.   else
  13.   {  pTempExpression->parse();   // parse an expression
  14.      delete pTempExpression;   // clean up
  15.   }                        // test for the expression syntax
  16.  
  17.   pTemp = gpTokenizer->getToken(); // get a new token
  18.  
  19.   if (pTemp->tokentype == tkthen)  // check for the token then
  20.    {
  21.     pTemp = gpTokenizer->lookToken();
  22.  
  23.     while ((pTemp->tokentype != tkelse) &&    // loop to parse statements
  24.            (pTemp->tokentype != tkendif) &&   // after the token then
  25.    (!gpTokenizer->eof()) )
  26.     {
  27.         // create a statement object
  28.         Pstatement * pMyStatement = new Pstatement;
  29.         if (pMyStatement == NULL)      // check out of memory
  30.           return FALSE;
  31.         else
  32.         {  pMyStatement->parse();      // call the parse function
  33.            delete pMyStatement;      // clean up
  34.         }
  35.         pTemp = gpTokenizer->peekToken();     // look ahead token
  36.     }
  37.    }
  38.   else ; //output error message
  39. }
  40.  
  41.